1. Field of the Invention
The present invention relates to an IP (Internet Protocol) stream communicating system, an IP stream receiving apparatus, and a reception processing timing sync method for use in the IP stream receiving apparatus, and in particular, to timing sync of reception processing of the IP stream.
2. Description of the Related Art
When video and audio streams and the like are transmitted/received in real-time over an IP network or the like, UDP (User Datagram Protocol) packets are generally used. For the video and audio streams, encoded data such as an MPEG2 (Moving Pictures Expert Group-2)-TS (Transport Stream) or non-compressed (PCM: Pulse Code Modulation) data is used.
The sync timing information (for example, TS time stamps or the like) in the IP stream communication processing is added using a protocol (for example, the RTP (Real-time Transport Protocol) or the like) defined at a higher level than the UDP. When sync timing is implemented in this way, an RTP header of the type shown in FIG. 10 may be added as the IP stream.
The IP stream shown in FIG. 10 is configured from an “IP header”, a “UDP header”, an “RTP header”, and a “payload” (video, audio or the like), and the sync timing is inserted into the “RTP header”. Note that the head portion of a sequence number in the RTP header or the like can be used in place of the above-described sync timing.
An example configuration of the system which communicates the IP stream is shown in FIG. 11. A video/audio transmission apparatus is configured to include a video/audio encoding processing circuit 31 which performs encoding processing on audio/video based on audio/video input and video frame sync, a TS (Transport Stream) time stamp adding circuit 32 which adds TS time stamps to MPEG2-TS packets (hereinafter referred to as TS packets) resulting from the encoding, and an FEC (Forward Error Correction) encoding circuit 33 which adds redundant packets to the TS packets, an RTP adding circuit 34 which adds RTP headers to the TS packets, and a UDP/IP transmitting circuit 35 which adds UDP headers and IP headers and transmits the resulting packets to an IP network 100.
Further, the video/audio receiving apparatus is configured to include a UDP/IP receiving circuit 41 which receives the IP packets from the IP network 100, removes the “IP header” and “UDP header” from the IP packets and outputs the resulting packets, an RTP removing circuit 42 which removes the “RTP header” from the outputted packets and outputs the resulting payloads, an FEC decoding circuit 43 which performs FEC decoding on TS packets of the payloads, a TS time stamp regenerating circuit 44 which regenerates the TS time stamps from the TS packets which have undergone error correction in the FEC decoding, and a video/audio decoding processing circuit 45 which performs decoding processing to recover the video/audio from the TS packets.
Sync timing (reception processing timing) of the IP stream is required in the FEC decoding processing and the like (block and framing processing) that takes place immediately on reception of the IP stream. Note that, here, “block” refers to a set of “n” TS packets. In the FEC decoding processing and the like, later-described error correction processing is performed to recover lost TS packets (see, for instance, Patent Document 1: Japanese Patent Laid-Open No. 2005-210219).
The above-described sync timing involves the following. On the transmitting side, a head byte arrival time of each TS packet is added as a TS time stamp (see FIG. 10) immediately before transmission. On the receiving side, the time stamps are regenerated by the TS time stamp regenerating circuit 44. Then, while referring to the TS time stamp information which has been added to the head of each TS packet, control is performed using FIFO (First In First Out) or the like to ensure that the packet interval is the same as at transmission (when the time stamp was added). In this case, the time stamp information is expressed using a 27 MHz, 32-bit (4-byte) count value. This type of TS stream is generally called a time-stamp-including TS (TTS).
FIG. 12 shows an example, which relates to the present invention, of adding the TS time stamp. In the case shown in FIG. 12, if the TS time stamp of a TS packet #0 is denoted to, the TS time stamp of a TS packet #1 is denoted t1 and a time at which the reading of TS packet #0 from the FIFO begins is denoted tA, the timing tB for reading the TS packet #1 from the FIFO is calculated by the following equation.tB=tA+(t1−t0)
In the FEC processing, a “linear code” such as a Reed-Solomon code or an LDPC (low density parity check) code can be generally used. The following briefly describes error correction operation at the packet level (one packet=code word of one bit), taking the LDPC code as an example.
First, on the transmitting side, when packets “0” to “6” are inputted in the FEC processing, the redundant packets “7” to “9” are created based on a predetermined check matrix as shown in FIG. 13. In this case, the redundant packet “7” is calculated as the exclusive OR of the packet “1”, the packet “3” and the packet “5”. The redundant packet “8” is calculated as the exclusive OR of the packet “2”, the packet “4” and the packet “6”. The redundant packet “9” is calculated by the exclusive OR of the packet “0”, the packet “3” and the packet “6”.
On the receiving side, when an IP stream in which the redundant packets “7” to “9” have been added and the packets “0”, “3” and “6” have been lost as shown in FIG. 14 is received, an error list is created as zeroes are written in for the received packets based on the sequence numbers of the received packets. Here, an initial value of the error list is assumed to be ‘1’. Since the packets “0”, “3” and “6” are lost in this case, the error list will be ‘1001001000’.
When the error list and the check matrix are compared, the error list is read from the top in order and if a weight (‘1’) exists in a “column of the check matrix” corresponding to ‘1’ of the error list, that weight is defined as an “error weight” (encircled entries). Then the number of error weights is counted for each row (number of row error weights).
In the example shown in FIG. 14, the number of the row error weights in the first row of the check matrix is ‘1’, the number of the row error weights in the second row of the check matrix is ‘1’, and the number of the row error weights in the third row of the check matrix is ‘3’. Based on this result, it is determined that the first and the second rows of the check matrix can used in the recovery. Specifically, by taking the exclusive OR of the packets which correspond to first and second row weights in the check matrix which are (‘1’) but are not “error weights”, the lost packets “3” and “6” are recovered. Thus, the lost packet “3” is recovered by taking the exclusive OR of the packet “1”, the packet “5” and the packet “7”. The lost packet “6” is recovered by exclusive OR of the packet “2”, the packet “4” and the packet “8”.
In FEC processing, the above described processing is called a “search”, and the first “search” allows the lost packets “3” and “6” to be recovered. Next, according to the FEC processing, a second “search” is performed. Note, however, that because the lost packets “3” and “6” have been recovered, the error list is updated by writing ‘0’ at the positions of the packet “3” and the packet “6” recovered.
The second “search” is performed in the same way. Specifically, the error list is compared with the check matrix, reading in order from the top of the error list. Any weights of “1” in “columns of the check matrix” that correspond to a ‘1’ in the error list are defined as “error weights” (encircled entries), and the number of “error weights” in each row is counted (number of row error weights).
In the example shown in FIG. 15, the number of error weights in the first row of the check matrix is ‘0’, the number of error weights in the second row of the check matrix is ‘0’ and the number of error weights in the third row of the check matrix is ‘1’. From these results, it is determined that the third row of the check matrix can be used in the recovery. By taking the exclusive OR of the packets which correspond to third row weights in the check matrix with a value of (‘1’) which are not “error weights”, the lost packet “0” is recovered. Thus, the lost packet “0” is recovered by taking the exclusive OR of the packet “3”, the packet “6” and the packet “9”.
As described above, in error correction processing such as LDPC, searches are repeatedly performed until no pattern that allows error correction is found. However, because the error correction processing time for the LDPC processing or the like is limited (to a single FEC block time), in real-time processing such as that shown in FIGS. 16 and 17, a correction start time must be stipulated for each FEC block. To achieve this, the correction start time of each FEC block is determined by the FEC outputting timing (=TS time stamp regenerating timing).
In the FEC processing shown in FIGS. 16 and 17, the “FEC input”, the “FEC correction” and the “FEC output” are sequentially performed. First, the processing at the FEC input #1 is performed. When the processing for the FEC input #1 is finished, the processing for the FEC input #2 and the processing for the FEC correction #1 are performed. When the processing for the FEC input #2 is finished, the processing for the FEC input #3, the processing for the FEC correction #2 and the processing for the FEC output #1 are performed. Thus, in the FEC processing, the processing for each FEC input, FEC correction and FEC output are sequentially performed.
In the system communicating the IP streams shown in FIG. 11, it is possible to use the TTS time information which is attached to the TS packets to generate correct block sync, and consequently, to perform stable and effective processing in error correction and the like. As shown in FIG. 10, TTS is added to the head of each TS packet in the payload as time information with a resolution of 27 MHz.
However, in IP media transmission, unless a particular standard is being applied, there is no need to attach TTS, and so the configuration of a system, such as the one in FIG. 18, which communicates an IP stream without TTS may also be considered. The video/audio transmission apparatus in FIG. 18 is configured to include a video/audio encoding processing circuit 31, an FEC encoding circuit 33, an RTP adding circuit 34, and a UDP/IP transmitting circuit 35. The video/audio receiving apparatus includes a UPP/IP receiving circuit 41, an RTP time stamp regenerating circuit 42, an FEC decoding circuit 43, and a video/audio decoding processing circuit 45.
The video/audio transmitting apparatus and the video/audio receiving apparatus operate in the manner shown in FIGS. 19 and 20. In the system shown in FIG. 18, since TTS is not used, the time stamp of an RTP header (see FIG. 10) added by the RTP adding circuit 34 in the video/audio transmitting apparatus is regenerated by the RTP time stamp regenerating circuit 46 in the video/audio receiving device and used to generate the block sync.
In the above-described IP stream receiving apparatus relating to the present invention, the time stamp of the RTP header is regenerated and used to generate the block sync as shown in FIG. 20. The time information of the RTP header time stamp, however, has a resolution of only 90 KHz.
Consequently, an IP stream communicating system without TTS cannot perform the receiving sync with a resolution that is greater than or equal to the resolution of the time information the time stamp of the RTP header. This lack of resolution adversely affects the reception output quality. For example, even when the reception of the IP stream is stable, jitter at a maximum of 90 KHz occurs, making it difficult to achieve stable and effective processing for error correction and the like.
Specifically, it becomes difficult to secure sufficient error correction processing time. When the processing time for receiving a given block is extended as a result of network jitter (jitter at maximum of 90 KHz), it becomes difficult, for example, to secure enough time for the error correction of the block following the given block. When the error correction processing time is shortened, the number of search repetitions is reduced and the error correction capability is weakened.